﻿// 操纵比赛 MATCHFIX.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://algospot.com/judge/problem/read/MATCHFIX

问题
曾经作为世界比赛亚军而受到称赞的J先生，在成绩下滑后无法抵挡诱惑，涉足了赛事操纵的世界。作为一个以编程大赛为荣的J先生，操纵比赛的规模非常大，他让参加AlgoSpot Cup决赛联赛的N名选手都参与了比赛操纵。

决赛联赛由多场1:1的比赛组成。在每场比赛中总能分出胜负，没有平局，所有比赛结束后，获胜场次最多的选手将获得冠军。如果有两个或更多选手获胜场次相同，则它们将共同获得冠军。J先生认为大部分选手都不太可能获胜，因此他希望通过单独获胜的方式，让选手X获得冠军，并从赌博网站中获取不正当利益。当然，如果他公开操纵比赛，将很难避免引起怀疑，因此他希望尽量减少选手X的获胜场次。

给定每个选手当前的胜场数和剩余比赛列表，编写一个程序来计算是否可以适当操纵比赛，使选手X获得冠军，并计算获胜的最小场次。

输入
输入的第一行包含测试用例的数量C（C <= 50）。每个测试用例的第一行包含参加决赛联赛的选手数量N（2 <= N <= 12）和剩余比赛的数量M（0 <= M <= 100）。每个选手以0到N-1的编号给出。接下来一行包含N个整数，按顺序给出每个选手的当前胜场数。然后是M行，每行包含两个选手编号，表示这两个选手之间进行比赛。每个选手的当前胜场数不超过1000。

选手X的编号为0。不能保证在决赛中所有选手都会进行相同数量的比赛。

输出
对于每个测试用例，每行输出选手X获得独立冠军所需的最小胜场数。如果不可能实现，则输出-1。

示例输入
3
2 2
3 3
0 1
0 1
3 3
4 2 2
1 2
1 2
1 2
4 4
5 3 3 2
0 1
1 2
2 3
1 3
示例输出
5
-1
5
*/
int main()
{
    std::cout << "Hello World!\n";
}

 